///**
// * AbstractMongoDtoFactory.java
// */
//package com.mht2017.common.mongo.dto;
//
//import java.lang.reflect.ParameterizedType;
//import java.lang.reflect.Type;
//import java.util.ArrayList;
//import java.util.List;
//
//import com.alibaba.fastjson.JSON;
//import com.alibaba.fastjson.JSONObject;
//import com.mongodb.DBCursor;
//
//
//public abstract class AbstractMongoDtoFactory<T> implements MongoDtoFactory<T> {
//
//	@Override
//	public boolean isSupport(Class<?> dtoClass) {
//		return getDtoClass() == dtoClass;
//	}
//
//	private Type getDtoClass() {
//		return ((ParameterizedType) this.getClass().getGenericSuperclass()).getActualTypeArguments()[0];
//	}
//
//	@Override
//	public T createOne(DBCursor dbCursor) {
//		if (null != dbCursor) {
//			if (dbCursor.hasNext()) {
//				T searchConfigDto = pickOne(JSON.parseObject(dbCursor.next().toString()));
//				dbCursor.close();
//				return searchConfigDto;
//			}
//		}
//		return null;
//	}
//
//	@Override
//	public List<T> createMulti(DBCursor dbCursor) {
//		List<T> results = new ArrayList<>();
//		if (null != dbCursor) {
//			while (dbCursor.hasNext()) {
//				results.add(pickOne(JSON.parseObject(dbCursor.next().toString())));
//			}
//			dbCursor.close();
//		}
//		return results;
//	}
//
//	protected T pickOne(JSONObject configObject) {
//		return JSON.parseObject(JSON.toJSONString(configObject), getDtoClass());
//	}
//
//}
